perm filename RX.F4[PAX,LCS] blob
sn#573424 filedate 1981-03-12 generic text, type T, neo UTF8
00100 C***** AIDS IN EXTRACTING PARTS FROM SCORES AND DOES AUTOMATIC PAGE LAYOUT.
00200 C***************************** THERE ARE STILL SEVERAL BUGS IN THIS PROG.
00300 C***************************** TRANSPOSE-ONLY IS NOT FULLY TESTED.
00400 C*********** TRANSPOSITION OF 'F' PARTS IN BASS CLEF HAS SOME PROBLEMS.
00500 C***************************** ETC., ETC. 8/78
00600
00700 C SEE PAGE.CMD FOR LOADING INSTRUCTIONS
00800 C **** SUBROUTINE LIST *****
00900 C PAGE: READX
01000 C RESPC:
01100 C RESTP:
01200 C WRTPAG:
01300 C PGSUB: FILOUT(NAMQ,NPG), FILEIN, STAVES
01400 C TRONLY:
01500 C TRNSP: TRNSP, RVRS
01600 C PTMOVX: PTMOVE, TURN
01700 C FNDTRN: MNMX, FNDTRN, BRJUGL, GET
01800 C PFAIL: LOOKF,LOOKX,LOOK,SHFTQ,SORT2,NORH,FNDEND,MINMAX,RLOOP,BLTEM,IFIX,FLOAT
01900 C GETPTS,MOVIT,EXTEN,DBAR,QRN,SORT,SHIFT,SHFT1,SHFT0,PSHFT,ADRST,STAFF
02000 C RIGHT,RESTS,EXCHG,EXCH,SHRNK,EXPND,CLFNUM,SLRV,CLEFN,MMNN,CODEN,ZERO
02100 C EXT: PUTEXT,EXTOUT,GETEXT,EXTIN,FINEXT
02200
02300 COMMON/STF/RSTFAC(0/7),RSTJ2 /POSI/STFF(0/7),JJ2,JPQ
02400 1 /IPG/IPG,JPG,BRACK(0/7),RSTNUM(8),RPSZ(8),RHGT(8),
02500 1 RCLEF(0/7) /RSIG/RSIG(0/7) /IVV/NRD(200)
02600 COMMON RS,JA,REST,J2,RQ(18),JX,PR,LX,RDIS
02700 C ORDER OF COMMON BLOCKS **MUST** STAY AS IS!
02800 COMMON/XRN/RN(3500) /SF/KL,RT,KP,STFSZ,NAMX,EXT
02900 1 /PTR/KWDS(350)/LLL/LLL,LL,I,IX,XSIG/XXX/LK,LP,JY /JN/J,N
03000 C INCREASE DIMENSION OF KWDS (KPN & Q) FOR VERY FULL PAGES.
03100 DIMENSION MM(1500),NN(1500),BARS(509),STFNM(0/7),KSAVE(30),
03200 1 RMETER(0/7),RCL(0/7),NUMS(30),PGTRN(500),SAVES(470),U(1)
03300 C KSAVE AND SAVES ARE TO SAVE REHEARSAL NUMS, ETC. -- LIMIT=30
03400 COMMON /PX/KPN(450) /Q/Q(4000) /KBAR/KBAR(1027) /IRST/IRST
03500 1 /RCLF/KK,CLEF,KW,ITEM,RSTAFF,SN,YN,RNAM,RNAM2,RNAM3
03600 1 /RSP/KNM(100) /ENDL/ENDLN,KQ,NAME,NMPG,SPCNT,LASTNM
03700 1 /JWDS/JWDS(300),RRN(3000)
03800 C JWDS IS EQUIVALENCED IN PTMOVX.F4 AND RESTP.F4
03900 DATA FIB/.7/,RSPC/25./,PGNUM/1.6/,RNMHT/16.0/,RNMSZ/1.0/
04000 1 ,RLTRSZ/1.0/,SPCPG/2.7/
04100 EQUIVALENCE (RQ(2),R4),(R5,RQ(3)),(R6,RQ(4)),(R7,RQ(5))
04200 1,(MM,RN),(NN,RN(1501)),(KS,RS),(BARS,KBAR(4)),(JRSTF,RSTJ2)
04300 1,(R8,RQ(6)),(R9,RQ(7)),(RQ(10),XLFT),(KBR,KBAR),(T,KBAR(2))
04400 1,(STFNM,KBAR(508)),(NUM1,NUMS,KPN),(PGTRN(1),KBAR(5 16))
04500 1,(SAVES,Q(3001)),(KSAVE,Q(3475)),(U,KBAR(1026))
04600 C HANDLES 503 PAGES AND PAGE-TURN INFO. IN KBAR AND PGTRN
04700 C RQ(2) IS R4, RQ(3) IS R5 ETC. STAFF NAMES START AT KBAR(508)=STF(0)
04800
04900 RN(2)=0
05000 EXT='MS'
05100 IRST=0
05200 C IRST IS USED IN SUBROUTINE RESTP
05300 IPG=0
05400 KBR=0
05500 NMPG='PAGEA'
05600 JPG=0
05700 JRD=1
05800 ENDLN=0
05900 SAVSIZ=0
06000 ISN=0
06100 NCNT=10000
06200 IFOUND=0
06300
06400 TYPE 1000
06500 ACCEPT 2000,NAMX
06600 IF(NAMX.EQ.0)CALL PT2
06700 IF(NAMX.EQ.3)CALL TRONLY
06800 NPG=NAMX-2
06900 TYPE 3300
07000 IF(NPG.GE.0)GO TO 3000
07100 CC IF(NPG.GE.0)TYPE 3
07200 ACCEPT 2,KS,NTYPE
07300 C TYPE -1 AFTER NAME(I.E.5 SPACES) TO PRINT INST. NAMES AS READ.
07400 CC NAMZ=KS
07500 JNM=1
07600
07700 CALL LO2UP(KS)
07800 143 CALL IFILE(1,KS)
07900 READ(1,2)K
08000 CC843 READ(1,2)K
08100 IF(K.NE.'COMME')GO TO 543
08200 743 READ(1,643),K,K,K
08300 C READ ET DIRECTORY !∃∀ βλπα∀πεβα!ββX!
08400 IF(K.NE.';')GO TO 743
08500 READ(1,2)K
08600 GO TO 843
08700 C FIRST LINE MUST BE EXTENSION NAME
08800 643 FORMAT(3A1)
08900 2 FORMAT(A5,30I)
09000 CC3 FORMAT(' TYPE FILE NAME.EXT -- '$)
09100 3300 FORMAT(' TYPE FILE NAME -- '$)
09200 1000 FORMAT(' 1=PARTS, 2=PAGE LAYOUT, 3=TRNSP ONLY, <CR>=OLD '$)
09300 2000 FORMAT(I)
09400 CC543 READ(1,2,END=343),KNM(JNM),(KPN(K),K=1,30)
09500 543 CALL IFILE(1,KS)
09600 843 CALL READX(1,KNM(JNM),EXT,KEND,NUMS)
09700 IF(KEND)GO TO 343
09800 JNM=JNM+1
09900 DO 434 K=1,30
10000 J=KPN(K)
10100 JPG=JPG+1
10200 NRD(JPG)=J
10300 C BE CAREFUL ABOUT RUNNING OVER NRD ARRAY (100)-- ZEROS ARE INSERTED***********
10400 434 IF(J.EQ.0)GO TO 843
10500 GO TO 843
10600 CC3000 CALL NAMEXT
10700 3000 CALL READX(5,NAMX,EXT,KEND,NUMS)
10800 KNM(1)=NAMX
12200 END
65800 SUBROUTINE READX(IDEV,NAME,IEXT,KEND,NUMS)
65900 COMMON /PTR/INP(72)
66000 DIMENSION FORM2(5),FORMT(5),NUMS(30)
66100 DATA FORMT(1)/'('/,FORM2/'A1,','A2,','A3,','A4,','A5,'/
66200 1, FORM3/'30I)'/
66300 1 FORMAT(72A1)
66400 CC IEXT='MS'
66500 CC ACCEPT 1,INP
66600 KEND=0
66700 C IDEV=DEVICE NUMBER (1=DSK, 5=TTY)
66800 READ(IDEV,1,END=12)INP
66900 DO 2 K=2,72
67000 IF(INP(K).EQ.' ')GO TO 3
67100 2 IF(INP(K).EQ.'.')GO TO 4
67200 3 FORMT(3)=FORM3
67300 FORMT(4)=' '
67400 FORMT(5)=' '
67500 5 FORMT(2)=FORM2(K-1)
67600 REREAD FORMT,NAME,NUMS
67700 GO TO 10
67800 4 FORMT(3)=FORM2(1)
67900 C CATCHES DOT
68000 DO 7 N=K+1,72
68100 7 IF(INP(N).EQ.' ')GO TO 8
68200 8 FORMT(4)=FORM2(N-K-1)
68300 FORMT(5)=FORM3
68400 FORMT(2)=FORM2(K-1)
68500 REREAD FORMT,NAME,K,IEXT,NUMS
68600 CALL LO2UP(IEXT)
68700 10 CALL LO2UP(NAME)
68800 RETURN
68900 12 KEND=-1
69000 END
69100
69200 SUBROUTINE LO2UP(J)
69300 C CONVERTS ALL LOWER CASE TO UPPER CASE.
69400 J=J.AND..NOT.((J/2).AND."201004020100)
69500 END
69600
69700 FUNCTION TSIG(Q,J)
69800 DIMENSION Q(1)
69900 TSIG=IFIX(Q(J+5)*100.0+Q(J+6)+.5)
70000 C COMBINES METER NUMS. (2/4 = 204. ETC.)
70100 END